//
//  groupModel.swift
//  表情键盘的实现
//
//  Created by 李进 on 15/10/24.
//  Copyright © 2015年 李进. All rights reserved.
//

import UIKit

class groupModel: NSObject {
    
    //表情包所在的路径
    var id: String?
    
    //表情包的名称
    var group_name_cn: String?
    
    //表情数组,为了保证在使用的时候能够 保证有表情使用懒加载
    lazy var emoticons = [EmoticonsModel]()
    
    init(dict: [String : AnyObject]){
        
        super.init()
        //这边因为涉及到多个表情包，所以不能再使用，kvo 的方法
        id = dict["id"] as? String
        
        group_name_cn = dict["group_name_cn"] as? String
        
        //首先判断数组中是否含有值,和类型是否正确
        if let array = dict["emoticons"] as? [[String:AnyObject]] {
            
            var index = 0
            //如果是这种类型的数组久开始便利数组
            for var dic in array {
                //这边因为 png 图片路径 是需要拼接的 是id ＋ png 所以在这边可以重新拼接 png路径
                //因为png时可选的在这边先判断png 的类型是否正确
                if let png = dic["png"] as? String , dir = id{
                    
                    //重新拼接
                    dic["png"] = dir + "/" + png
                    
                }
               // let model = EmoticonsModel(dict: dic)
                emoticons.append(EmoticonsModel(dict: dic))
                
                index++
                //每个20 个就要一个删除按钮
                if index == 20 {
                    emoticons.append(EmoticonsModel(isRemove: true))
                    index = 0
                }
            }
            
        }
        
        appendEmptyEmoticon()
        
    }
    
    /// 在表情数组末尾，添加空白表情
    private func appendEmptyEmoticon() {
        
        // 取表情的余数
        let count = emoticons.count % 21
        
        // 只有最近和默认需要添加空白表情
        if emoticons.count > 0 && count == 0 {
            return
        }
        
        //print("\(group_name_cn) 剩余表情数量 \(count)")
        // 添加空白表情
        for _ in count..<20 {
            emoticons.append(EmoticonsModel(isEmpty: true))
        }
        
        // 最末尾添加一个删除按钮
        emoticons.append(EmoticonsModel(isRemove: true))
    }
    
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {
      
    }
    
    override var description: String{
       let key = ["id", "group_name_cn", "emoticons"]
        
        return dictionaryWithValuesForKeys(key).description
    }
    
    func loadPlistFile(){
        
    }

}
